/**
 * _require 便捷操作函数集
 * 2018年11月14日 11点41分
 * nico@coser.pub
 */

module.exports._init = function(){
  /**
   * _require 引入封装
   * @param dirName string 引入文件夹名字（in script dir）
   * @param fileName string 引入文件名字（in dirName）
   * @return Module
   */
  this._require = function (dirName, fileName) {
    return require('../../script/' + dirName + '/' + fileName);
  };
  /**
   * _tool 引入工具文件夹封装
   * @param toolName string 引入工具名字（in script/tool dir）
   * @extend F:(require)
   * @return Function
   */
  this._tool = function (toolName, ) {
    return this._require('tool', toolName);
  };

  /**
   * _apply 引入支持文件夹封装
   * @param applyName string 引入工具名字（in script/apply dir）
   * @extend F:(require)
   * @return Function
   */
  this._apply = function (applyName, ) {
    let apply = this._require('apply', applyName);
    apply._init.bind(this)();
    return apply;
  };

  /**
   * _request 引入请求函数封装
   * @param requestName string 引入工具名字（in script/request dir）
   * @extend F:(require)
   * @return Function
   */
  this._request = function (requestName) {
    return this._require('request', requestName);
  };

  /**
   * _config 引入参数封装
   * @param configName string 引入参数名字（in script/data/config file）
   * @extend F:(require)
   * @return Object
   */
  this._config = function (configName) {
    return this._require('data', "config")[configName];
  };

  /**
   * _format 引入格式化处理函数封装
   * @param formatName string 引入格式化工具名字（in script/tool/format file）
   * @extend F:(require)
   * @return Object
   */
  this._format = function (formatName) {
    return this._require('tool', "format")[formatName];
  };
}